package cn.com.cpic.insurance.rulecheck.core;

import java.io.Serializable;

/**
 * 可修改集合接口，集合中不能包含重复的元素
 * 
 * @author 代波
 * @since 2011-8-13
 * @param <T> 集合中元素的类型
 */
public interface ModifiableSet<T> extends Iterable<T>, Serializable {
	/**
	 * 检查集合中是否包含指定元素
	 * 
	 * @param c 待检查的元素
	 * @return 如果包含，返回true，否则返回false
	 */
	boolean contains(T c);

	/**
	 * 往集合中增加一个元素
	 * 
	 * @param c 待增加的元素
	 * @return 是否增加成功，如果集合中已经存在此元素，则返回false，新元素不会增加到集合
	 */
	boolean add(T c);

	/**
	 * 从集合中移除一个元素
	 * 
	 * @param c 待移除的元素
	 * @return 移除成功，返回true，如果集合中未找到此元素，返回false
	 */
	boolean remove(T c);

	/**
	 * 返回集合中现有元素的数量
	 * 
	 * @return 现有元素的数量
	 */
	int size();

	/**
	 * 检查集合是否是空的
	 * 
	 * @return 如果集合中没有元素，则返回true，否则返回false
	 */
	boolean isEmpty();
}
